//
//  NSDate + Sina.swift
//  MYSwiftWeiBo
//
//  Created by shingwai chan on 16/3/7.
//  Copyright © 2016年 ChanShingWai. All rights reserved.
//

import Foundation

extension NSDate {
    
    /**
     字符串时间转换格式
     
     - parameter dateString: 时间字符串
     
     - returns: 格式后的NSDate
     */
    class func sinaDateStringToDate(dateString: String) ->NSDate {
    
        //日期格式化
        let dateFormatter = NSDateFormatter()
        //格式
        dateFormatter.dateFormat = "EEE MMM dd HH:mm:ss zzz yyy"
        dateFormatter.locale = NSLocale(localeIdentifier: "EN")
        
        //返回日期转换
        return dateFormatter.dateFromString(dateString) ?? NSDate()
    }
    
    /**
     返回距离当前时间的描述
     
     - returns: 距离现在多少
     */
    func sinaDateDescription() -> String {
        
        let calendar = NSCalendar.currentCalendar()
        //是否当天
        if calendar.isDateInToday(self) { //当天的
            //当前时间
            let delta = Int(NSDate().timeIntervalSinceDate(self))
            
            if delta < 60 {
                //1分钟内
                return "刚刚"
            }else if delta < 60 * 60 {
                //一小时内
                return "\(delta / 60)分钟前"
            }else {
                //x小时前
                return "\(delta / 60 / 60)小时前"
            }
            
        }
        
        var fmt = " "
        //是否昨天
        if calendar.isDateInYesterday(self) { //昨天
            fmt = "昨天 HH:mm"
        } else if calendar.compareDate(self, toDate: NSDate(), toUnitGranularity: NSCalendarUnit.Year) == NSComparisonResult.OrderedAscending { //不是今年
            //年份比较
            fmt = "yyyy-MM-dd HH:mm"
        }else if calendar.compareDate(self, toDate: NSDate(), toUnitGranularity: NSCalendarUnit.Year) == NSComparisonResult.OrderedSame { //同一年
        
            fmt = "MM-dd HH:mm"
        }
        
        //将NSdate转成字符串
        let dateForMatter = NSDateFormatter()
        dateForMatter.dateFormat = fmt
        dateForMatter.locale = NSLocale(localeIdentifier: "EN")
        //返回字符串
        return dateForMatter.stringFromDate(self)
    }
    
}